package cn.yitun.chat.yitunserverimbase.dao.system;

import cn.yitun.chat.yitunservercommonlib.crud.yitun.CrudDao;
import cn.yitun.chat.yitunservercommonlib.dataentity.dto.system.RoleDto;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.system.RoleInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.system.RoleVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统角色表
 * @author chenyitun
 * @email chenyitun@163.com
 * @date 2020-05-27 14:43:51
 */
@Mapper
public interface RoleDao extends CrudDao<RoleDto, RoleInfo, RoleVo> {

	int absDel(Long id);

	int batchAbsDel(Long[] ids);

	/**
	 * 查询未在列表内的角色列表
	 * @param outIds
	 * @return
	 */
	List<RoleVo> getListByOutIds(@Param("outIds") List<Long> outIds);

	/**
	 * 获取多人角色信息,去重
	 * @param userIdList
	 * @return
	 */
	List<RoleVo> getUserRoleInfoListByUserIdList(@Param("userIdList") List<Long> userIdList);

	/**
	 * 获取用户角色id
	 * @param userId
	 * @return
	 */
    List<Long> roleIdsByUserId(Long userId);

	/**
	 * 校验角色名称是否唯一
	 * @param role
	 * @return
	 */
    RoleInfo checkRoleNameUnique(@Param("role") RoleInfo role);

	/**
	 * 校验角色权限是否唯一
	 * @param role
	 * @return
	 */
	RoleInfo checkRoleSignUnique(@Param("role") RoleInfo role);

	List<RoleInfo> listByUserId(@Param("userId") Long userId);
}
